package com.atguigu.daijia.driver.service;

import com.atguigu.daijia.model.form.driver.DriverFaceModelForm;
import com.atguigu.daijia.model.form.driver.UpdateDriverAuthInfoForm;
import com.atguigu.daijia.model.vo.driver.DriverAuthInfoVo;
import com.atguigu.daijia.model.vo.driver.DriverLoginVo;

/**
 * @author 谢忠涵7
 */
public interface DriverService {

    /**
     * @description: 司机小程序登录
     * @author: xiaoxie
     * @date: 2024/10/24 19:26
     * @param: [code] 临时票据
     * @return: token token 令牌
     **/
    String login(String code);

    /**
     * @description: 获取司机登录信息
     * @author: xiaoxie
     * @date: 2024/10/24 19:59
     * @param: [driverId] 司机id
     * @return: DriverLoginVo 封装司机登录信息VO对象
     **/
    DriverLoginVo getDriverLoginInfo(Long driverId);

    /**
     * @description: 获取司机认证信息
     * @author: xiaoxie
     * @date: 2024/10/24 19:59
     * @param: [driverId] 司机id
     * @return: DriverLoginVo 封装司机认证信息VO对象
     **/
    DriverAuthInfoVo getDriverAuthInfo(Long driverId);

    /**
     * @description: 更新司机认证信息
     * @author: xiaoxie
     * @date: 2024/10/24 19:59
     * @param: [driverId] 司机认证信息
     * @return: 是否成功
     **/
    Boolean updateDriverAuthInfo(UpdateDriverAuthInfoForm updateDriverAuthInfoForm);

    /**
     * @description: 创建司机人脸识别模型
     * @author: xiaoxie
     * @date: 2024/10/24 19:59
     * @param: [DriverFaceModelForm] 司机人脸信息
     * @return: 是否成功
     **/
    Boolean creatDriverFaceModel(DriverFaceModelForm driverFaceModelForm);

    /**
     * @description: 查询是否进行过人脸识别
     * @author: xiaoxie
     * @date: 2024/10/28 10:40
     * @param: [driverId] 司机id
     * @return:
     **/
    Boolean isFaceRecognition(Long driverId);

    /**
     * @description: 通过腾讯云验证司机人脸
     * @author: xiaoxie
     * @date: 2024/10/28 10:57
     * @param: [driverFaceModelForm]
     * @return: java.lang.Boolean
     **/
    Boolean verifyDriverFace(DriverFaceModelForm driverFaceModelForm);

    /**
     * @description: 司机开启接单服务
     * @author: xiaoxie
     * @date: 2024/10/28 11:03
     * @param: [driverId]
     * @return: java.lang.Boolean
     **/
    Boolean startService(Long driverId);

    /**
     * @description: 停止接单服务
     * @author: xiaoxie
     * @date: 2024/10/28 11:12
     * @param: [driverId]
     * @return: java.lang.Boolean
     **/
    Boolean stopService(Long driverId);
}
